package com.wei.czz.framework.admin.dao;

import com.wei.czz.framework.admin.entity.DeptEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * Created by IntelliJ IDEA.
 *
 * @author wei
 * date: 2022-08-16 21:18:56
 * className: DeptDao 系统部门表交互接口
 * version: 1.0
 * description:
 */
public interface DeptDao extends BaseMapper<DeptEntity> {

    /**
     * 查询子部门数据
     * @param parentPath   父级部门路径
     * @param deleteStatus 删除状态
     * @return 子部门数据
     */
    List<DeptEntity> selectChildrenList(@Param("parentPath") String parentPath,
                                        @Param("deleteStatus") Integer deleteStatus);

    /**
     * 查询父级部门路径关联的所有子部门主键数据
     * @param parentPath   父级部门路径
     * @param deleteStatus 删除状态
     * @return 子部门主键数据列表
     */
    List<Long> selectChildrenIdList(@Param("parentPath") String parentPath,
                                    @Param("deleteStatus") Integer deleteStatus);

    /**
     * 查询直接子部门主键数据
     * 根据部门主键，查询其直接子部门主键数据
     * @param parentId     主键
     * @param deleteStatus 删除状态
     * @return 直接子部门主键数据
     */
    List<Long> selectDirectChildrenIdList(@Param("parentId") Long parentId, @Param("deleteStatus") Integer deleteStatus);

    /**
     * 查询父级部门路径字段值
     * @param id 主键
     * @return 父级部门路径值
     */
    String selectParentPath(@Param("id") Long id);

    /**
     * 查询子部门中最大的排序等级
     * @param parentId     父级部门主键
     * @param deleteStatus 删除状态
     * @return 最大的排序等级
     */
    Integer selectMaxSort(@Param("parentId") Long parentId, @Param("deleteStatus") Integer deleteStatus);

}
